import request from '@/api/request'
import axios from 'axios'
import { blogMockApi } from './mock/blogs'

interface BlogData {
  id?: string
  title: string
  content: string
  summary?: string
  cover?: string
  status?: number
  category_ids?: string[]
  tag_ids?: string[]
}

interface BlogListParams {
  page?: number
  pageSize?: number
  title?: string
  status?: number
  category_id?: string
  tag_id?: string
}

interface BlogDetailParams {
  id: string
}

// 是否使用 Mock 数据（开发环境默认启用，可通过环境变量控制）
// const USE_MOCK = import.meta.env.DEV && (import.meta.env.VITE_USE_MOCK !== 'false')
const USE_MOCK = false

/**
 * 创建博客
 * @param data 博客数据
 * @returns 返回创建的博客信息
 */
export function createBlog(data: Omit<BlogData, 'id'>) {
  if (USE_MOCK) {
    return blogMockApi.create(data)
  }
  return request.post('/blogs/create', data)
}

/**
 * 更新博客
 * @param data 博客数据
 * @returns 返回更新后的博客信息
 */
export function updateBlog(data: BlogData) {
  if (USE_MOCK) {
    return blogMockApi.update(data)
  }
  return request.post('/blogs/update', data)
}

/**
 * 删除博客
 * @param data 删除数据
 * @returns Promise
 */
export function deleteBlog(data: BlogDetailParams) {
  if (USE_MOCK) {
    return blogMockApi.delete(data.id)
  }
  return request.post('/blogs/delete', data)
}

/**
 * 查询博客列表
 * @param params 查询参数
 * @returns 返回博客列表
 */
export function getBlogList(params?: BlogListParams) {
  if (USE_MOCK) {
    return blogMockApi.getList(params || {})
  }
  return request.post('/blogs/list', params || {})
}

/**
 * 查询博客详情
 * @param data 查询数据
 * @returns 返回博客详情
 */
export function getBlogDetail(data: BlogDetailParams) {
  if (USE_MOCK) {
    return blogMockApi.getDetail(data.id)
  }
  return request.post('/blogs/detail', data)
}

/**
 * 发布博客
 * @param data 博客ID
 * @returns Promise
 */
export function publishBlog(data: BlogDetailParams) {
  if (USE_MOCK) {
    return blogMockApi.publish(data.id)
  }
  return request.post('/blogs/publish', data)
}

/**
 * 取消发布博客
 * @param data 博客ID
 * @returns Promise
 */
export function unpublishBlog(data: BlogDetailParams) {
  if (USE_MOCK) {
    return blogMockApi.unpublish(data.id)
  }
  return request.post('/blogs/unpublish', data)
}

/**
 * 上传图片
 * @param formData 包含文件的 FormData
 * @returns 返回图片 URL
 */
export function uploadImage(formData: FormData) {
  if (USE_MOCK) {
    // Mock 模式：返回一个模拟的图片 URL
    return Promise.resolve({
      code: 200,
      msg: '上传成功',
      data: {
        url: 'https://picsum.photos/800/400?random=' + Date.now()
      }
    })
  }
  // 真实 API 模式：直接使用 axios 发送 FormData
  const token = localStorage.getItem('portal-web-token')
  const baseURL = import.meta.env.DEV 
    ? (import.meta.env.VITE_API_BASE_URL || '/devApi')
    : (import.meta.env.VITE_API_URL || import.meta.env.VITE_API_BASE_URL || '/api')
  
  return axios.post(`${baseURL}/upload/image`, formData, {
    headers: {
      'Content-Type': 'multipart/form-data',
      ...(token ? { Authorization: `Bearer ${token}` } : {})
    }
  }).then((res: any) => {
    // 适配响应格式
    if (res.data && res.data.code !== undefined) {
      return res.data
    }
    return {
      code: 200,
      msg: '上传成功',
      data: res.data
    }
  })
}

